#ifndef __LINKLIST_H__
#define __LINKLIST_H__

typedef char datatype;

typedef struct Node
{
	union
	{
		datatype data; //数据域
		int len;
	};
	struct Node *next; //指针域
}Linklist;

//创建
Linklist *list_create();

//判空
int list_empty(Linklist *L);

//头插
int list_insert_head(Linklist *L,datatype e);

//遍历
void list_show(Linklist *L);

//尾插
int list_insert_tail(Linklist *L,datatype e);

//任意插
int list_insert_pos(Linklist *L,int pos,datatype e);

//按位置查找返回查找到的结点
Linklist *find_node(Linklist *L,int pos);

//头删
int list_delete_head(Linklist *L);

//尾删
int list_delete_tail(Linklist *L);

//任意删
int list_delete_pos(Linklist *L,int pos);

//按值查找返回第一个查找成功的位置
int list_search_value(Linklist *L,datatype e);

//按位置修改
int list_updata_pos(Linklist *L,int pos,datatype e);

//按值修改
int list_updata_value(Linklist *L,datatype old_e,datatype new_e);

//原地逆置
void list_reverse(Linklist *L);

//销毁链表
void list_free(Linklist *L);
#endif
